package 哈希表;

/**
 * 242. 有效的字母异位词
 *
 * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的
 * 字母异位词
 * 思路；使用哈希表记录每个字符出现的次数，然后比较两个字符串的哈希表是否相等
 *
   首先，创建两个Hash表，统计 s 和 t中每个字符的出现次数
        然后比较这两个Hash表是否相等
   这样写占内存，优化思路如下:
        只创建一个hash表，统计s中字符出现的次数，
        继续优化，可以创建一个长度为26的数组，统计s中每个字符的出现次数， 通过数组代替哈希表
 */
public class L_242 {
    public boolean isAnagram(String s, String t) {
        if(s.length()!=t.length()){
            return false;
        }
        int [] count=new int[26];
        for (int i = 0; i <s.length() ; i++) {
            // 统计s中每个字符的出现次数
            count[s.charAt(i)-'a']++;
            // t中同样的字符递减
            count[t.charAt(i)-'a']--;
        }
        for(int c : count){
            if(c!=0){
                return false;
            }
        }
        return true;
    }
}
